<?php
header("content-type:text/plain;charset=utf-8");
error_reporting(E_ALL);//开启所有PHP错误报告

// 捕获错误 - 有错误时，执行该函数的回调函数
set_error_handler(function($errno, $errstr, $errfile = '', $errline = 0){
	var_dump("============== 错误捕获 ==============");
	var_dump("errno：" . $errno);
	var_dump("errstr：" . $errstr);
	var_dump("errfile：" . $errfile);
	var_dump("errline：" . $errline);
	echo "\n\n";
});

//注册一个会在php中止时执行的函数
register_shutdown_function(function(){
	var_dump("============== 中止时执行 - error_get_last ==============");
	$error = error_get_last();
	var_dump($error);
});

//设置用户自定义的异常处理函数（这个函数会接管报错信息）
set_exception_handler(function($e){
	var_dump("============== 截断异常 - set_exception_handler ==============");
	var_dump($e->getMessage());
	var_dump($e->getCode());
});

//手动抛异常
// $e = new Exception('自定义错误信息', 123);
// throw $e;

//手动抛异常 和 try{}catch(){} 有差不多的效果：
try{
	$e = new Exception('自定义错误信息333', 333);
	throw $e;
}catch(Exception $e){
	var_dump("============== 抛异常 - try{}catch(){} ==============");
	var_dump($e->getMessage());
	var_dump($e->getCode());
}


// 错误代码
// echo $val;
// include "test.php";
// $arr = [1,2,3];
// var_dump($arr[3]);
// no_func();
// new NoClass();





